Large companies operate in an increasingly complex, heterogeneous and dynamic environment. Generally, a large company is made up of divisions, and each division comprises or hosts businesses. Each business may sponsor the development, deployment, and maintenance of software applications or programs, and a typical software application may be segmented into parallel or sequential development projects. A typical development project may comprise service requests to add new, or change existing, functionality. Each project may be associated with one or more software releases. A software release is the coordinated deployment of a set of projects, from any number of software applications, which may be moved jointly to production on a specific date, worldwide or in a specific region, for a specific production environment or platform.
In a typical example, every time a large software application needs to go live on multiple platforms, managers and planners generally set up and schedule a number of parallel releases. When priorities shift, or projects fall behind schedule, the planners generally are required to assess the impact of such events, and make last-minute changes, often resulting in unsatisfactory delay or expense, or putting operations of the business at risk.
In order to control development networks of this complexity, an organization needs to manage (a) its individual requests, projects, software applications, releases, and platforms, and (b) the dependencies between them. Managing dependencies can be a daunting task, given increasing complexity and rate of change. In addition, dependencies typically cross the boundaries of single businesses, organizations, regions, functions, and processes, thus requiring systematic collaboration between stakeholders.